<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 全局变量  => 全局作用域
    // 存储在window中
    // var a = 10;
    // var b = 20;

    // function fn() {
    //     // 局部变量 => 局部作用域  => 存储在哪里?
    //     var a = 100;
    //     var b = 200;
    // }


    /* var a = 10;

    function fn() {
        console.log(a);  // 10
    }

    fn();  */


    // 链式查找  自己有先找自己的,没有=>向外跳一层找父作用域的
    // 一般情况下,调用函数会执行函数的上下文,函数执行完毕 就释放了,并返回函数执行的结果

    // var a = 10;

    // function fn() {
    //     var a = 100;
    //     console.log(a);  // 100
    // }

    // fn();


    // 函数嵌套调用 => 调用函数 fn,执行fn的上下文,代码在执行的过程中,又启动了新的函数 add,只有当内层函数 add 执行完毕,外层函数fn才会继续向后执行 => fn执行完毕 才会释放
    var a = 10;

    function fn() {
        var a = 100;
        console.log(a);  // 100
        function add() {
            a++;
            console.log(a); // 101
        }
        add();
    }

    fn();
    fn();
    fn();







</script>

</html>